home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_562 / intuisup / editor / source.lzh / edit1.c < prev    next >
C/C++ Source or Header  |  1991-10-25  |  32KB  |  819 lines

  1.         /*************************************
  2.          *                                   *
  3.          *             Editor v1.0           *
  4.          *   by Torsten Jürgeleit in 08/91   *
  5.          *                                   *
  6.          *             Edit part 1           *
  7.          *                                   *
  8.          *************************************/
  9.  
  10.     /* Includes */
  11.  
  12. #include "includes.h"
  13. #include "defines.h"
  14. #include "imports.h"
  15. #include "protos.h"
  16.  
  17.     /* Defines for edit gadgets */
  18.  
  19. #define EDIT_GADGET_XOFFSET    (EDIT_GADGET4_LEFT_EDGE - EDIT_GADGET1_LEFT_EDGE - 3 * EDIT_GADGET1_WIDTH) / 3
  20.  
  21. #define EDIT_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  22. #define EDIT_GADGET1_FLAGS        GADGET_DATA_FLAG_HOT_KEY
  23. #define EDIT_GADGET1_LEFT_EDGE        10
  24. #define EDIT_GADGET1_TOP_EDGE        (EDITOR_WINDOW_HEIGHT - EDIT_GADGET1_HEIGHT - 5)
  25. #define EDIT_GADGET1_WIDTH        ((7 + 2) * 8)
  26. #define EDIT_GADGET1_HEIGHT        15
  27. #define EDIT_GADGET1_TEXT        "_Ok"
  28. #define EDIT_GADGET1_TEXT_ATTR        &topaz80_attr
  29.  
  30. #define EDIT_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  31. #define EDIT_GADGET2_FLAGS        GADGET_DATA_FLAG_HOT_KEY
  32. #define EDIT_GADGET2_LEFT_EDGE        (EDIT_GADGET1_LEFT_EDGE + EDIT_GADGET1_WIDTH + EDIT_GADGET_XOFFSET)
  33. #define EDIT_GADGET2_TOP_EDGE        (EDITOR_WINDOW_HEIGHT - EDIT_GADGET2_HEIGHT - 5)
  34. #define EDIT_GADGET2_WIDTH        EDIT_GADGET1_WIDTH
  35. #define EDIT_GADGET2_HEIGHT        EDIT_GADGET1_HEIGHT
  36. #define EDIT_GADGET2_TEXT        "_Default"
  37. #define EDIT_GADGET2_TEXT_ATTR        &topaz80_attr
  38.  
  39. #define EDIT_GADGET3_TYPE        GADGET_DATA_TYPE_BUTTON
  40. #define EDIT_GADGET3_FLAGS        GADGET_DATA_FLAG_HOT_KEY
  41. #define EDIT_GADGET3_LEFT_EDGE        (EDIT_GADGET4_LEFT_EDGE - EDIT_GADGET3_WIDTH - EDIT_GADGET_XOFFSET)
  42. #define EDIT_GADGET3_TOP_EDGE        (EDITOR_WINDOW_HEIGHT - EDIT_GADGET3_HEIGHT - 5)
  43. #define EDIT_GADGET3_WIDTH        EDIT_GADGET1_WIDTH
  44. #define EDIT_GADGET3_HEIGHT        EDIT_GADGET1_HEIGHT
  45. #define EDIT_GADGET3_TEXT        "_Switch"
  46. #define EDIT_GADGET3_TEXT_ATTR        &topaz80_attr
  47.  
  48. #define EDIT_GADGET4_TYPE        GADGET_DATA_TYPE_BUTTON
  49. #define EDIT_GADGET4_FLAGS        GADGET_DATA_FLAG_HOT_KEY
  50. #define EDIT_GADGET4_LEFT_EDGE        (EDITOR_WINDOW_WIDTH - EDIT_GADGET4_WIDTH - 10)
  51. #define EDIT_GADGET4_TOP_EDGE        (EDITOR_WINDOW_HEIGHT - EDIT_GADGET4_HEIGHT - 5)
  52. #define EDIT_GADGET4_WIDTH        EDIT_GADGET1_WIDTH
  53. #define EDIT_GADGET4_HEIGHT        EDIT_GADGET1_HEIGHT
  54. #define EDIT_GADGET4_TEXT        "_Cancel"
  55. #define EDIT_GADGET4_TEXT_ATTR        &topaz80_attr
  56.  
  57.     /* Statics for edit gadgets */
  58.  
  59. STATIC struct GadgetData  edit_gadget_data[] = {
  60.    {
  61.     EDIT_GADGET1_TYPE,        /* gd_Type */
  62.     EDIT_GADGET1_FLAGS,        /* gd_Flags */
  63.     EDIT_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  64.     EDIT_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  65.     EDIT_GADGET1_WIDTH,        /* gd_Width */
  66.     EDIT_GADGET1_HEIGHT,        /* gd_Height */
  67.     EDIT_GADGET1_TEXT,        /* *gd_Text */
  68.     EDIT_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  69.     { 0, 0, 0 }
  70.    }, {
  71.     EDIT_GADGET2_TYPE,        /* gd_Type */
  72.     EDIT_GADGET2_FLAGS,        /* gd_Flags */
  73.     EDIT_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  74.     EDIT_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  75.     EDIT_GADGET2_WIDTH,        /* gd_Width */
  76.     EDIT_GADGET2_HEIGHT,        /* gd_Height */
  77.     EDIT_GADGET2_TEXT,        /* *gd_Text */
  78.     EDIT_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  79.     { 0, 0, 0 }
  80.    }, {
  81.     EDIT_GADGET3_TYPE,        /* gd_Type */
  82.     EDIT_GADGET3_FLAGS,        /* gd_Flags */
  83.     EDIT_GADGET3_LEFT_EDGE,        /* gd_LeftEdge */
  84.     EDIT_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  85.     EDIT_GADGET3_WIDTH,        /* gd_Width */
  86.     EDIT_GADGET3_HEIGHT,        /* gd_Height */
  87.     EDIT_GADGET3_TEXT,        /* *gd_Text */
  88.     EDIT_GADGET3_TEXT_ATTR,        /* *gd_TextAttr */
  89.     { 0, 0, 0 }
  90.    }, {
  91.     EDIT_GADGET4_TYPE,        /* gd_Type */
  92.     EDIT_GADGET4_FLAGS,        /* gd_Flags */
  93.     EDIT_GADGET4_LEFT_EDGE,        /* gd_LeftEdge */
  94.     EDIT_GADGET4_TOP_EDGE,        /* gd_TopEdge */
  95.     EDIT_GADGET4_WIDTH,        /* gd_Width */
  96.     EDIT_GADGET4_HEIGHT,        /* gd_Height */
  97.     EDIT_GADGET4_TEXT,        /* *gd_Text */
  98.     EDIT_GADGET4_TEXT_ATTR,        /* *gd_TextAttr */
  99.     { 0, 0, 0 }
  100.    }, {
  101.     INTUISUP_DATA_END        /* mark end of gadget data array */
  102.    }
  103. };
  104.     /* Defines for border data */
  105.  
  106. #define BORDER_GADGET1_TYPE        GADGET_DATA_TYPE_STRING
  107. #define BORDER_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  108. #define BORDER_GADGET1_LEFT_EDGE    (10 + (4 + 1) * 8)
  109. #define BORDER_GADGET1_TOP_EDGE        30
  110. #define BORDER_GADGET1_WIDTH        100
  111. #define BORDER_GADGET1_HEIGHT        12
  112. #define BORDER_GADGET1_TEXT        "_Name"
  113. #define BORDER_GADGET1_TEXT_ATTR    &topaz80_attr
  114. #define BORDER_GADGET1_INPUT_LEN    MAX_TEMPLATE_NAME_LEN
  115. #define BORDER_GADGET1_INPUT_ACTIVATE    ((ULONG)BORDER_GADGET_NAME << 16 | BORDER_GADGET_NAME)
  116. #define BORDER_GADGET1_INPUT_DEFAULT    NULL
  117.  
  118. #define BORDER_GADGET2_TYPE        GADGET_DATA_TYPE_CYCLE
  119. #define BORDER_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT)
  120. #define BORDER_GADGET2_TEXT        "_Type"
  121. #define BORDER_GADGET2_LEFT_EDGE    BORDER_GADGET1_LEFT_EDGE
  122. #define BORDER_GADGET2_TOP_EDGE        (BORDER_GADGET1_TOP_EDGE + BORDER_GADGET1_HEIGHT + 10)
  123. #define BORDER_GADGET2_WIDTH        (20 + (11 + 2) * 8)
  124. #define BORDER_GADGET2_HEIGHT        15
  125. #define BORDER_GADGET2_TEXT_ATTR    &topaz80_attr
  126. #define BORDER_GADGET2_ACTIVE        0
  127. #define BORDER_GADGET2_TEXT_ARRAY    &border_type_text_array[0]
  128.  
  129.     /* Statics for edit gadgets */
  130.  
  131. STATIC BYTE *border_type_text_array[] = {
  132.    "Box 1 - Out", "Box 1 - In", "Box 2 - Out", "Box 2 - In", NULL
  133. };
  134. STATIC struct GadgetData  border_gadget_data[] = {
  135.    {
  136.     BORDER_GADGET1_TYPE,        /* gd_Type */
  137.     BORDER_GADGET1_FLAGS,        /* gd_Flags */
  138.     BORDER_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  139.     BORDER_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  140.     BORDER_GADGET1_WIDTH,        /* gd_Width */
  141.     BORDER_GADGET1_HEIGHT,        /* gd_Height */
  142.     BORDER_GADGET1_TEXT,        /* *gd_Text */
  143.     BORDER_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  144.     {
  145.     BORDER_GADGET1_INPUT_LEN,    /* gd_InputLen */
  146.     BORDER_GADGET1_INPUT_ACTIVATE,    /* gd_InputActivate */
  147.     BORDER_GADGET1_INPUT_DEFAULT    /* gd_InputDefault */
  148.     }
  149.    }, {
  150.     BORDER_GADGET2_TYPE,        /* gd_Type */
  151.     BORDER_GADGET2_FLAGS,        /* gd_Flags */
  152.     BORDER_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  153.     BORDER_GADGET2_TOP_EDGE,    /* gd_TopEdge */
  154.     BORDER_GADGET2_WIDTH,        /* gd_Width */
  155.     BORDER_GADGET2_HEIGHT,        /* gd_Height */
  156.     BORDER_GADGET2_TEXT,        /* *gd_Text */
  157.     BORDER_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  158.     {
  159.     0,                /* gd_CyclePad */
  160.     BORDER_GADGET2_ACTIVE,        /* gd_CycleActive */
  161.     BORDER_GADGET2_TEXT_ARRAY    /* *gd_CycleTextArray */
  162.     }
  163.    }, {
  164.     INTUISUP_DATA_END        /* mark end of gadget data array */
  165.    }
  166. };
  167.     /* Defines for text data */
  168.  
  169. #define TEXT_GADGET1_TYPE        GADGET_DATA_TYPE_STRING
  170. #define TEXT_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  171. #define TEXT_GADGET1_LEFT_EDGE        (10 + (4 + 1) * 8)
  172. #define TEXT_GADGET1_TOP_EDGE        20
  173. #define TEXT_GADGET1_WIDTH        100
  174. #define TEXT_GADGET1_HEIGHT        12
  175. #define TEXT_GADGET1_TEXT        "_Name"
  176. #define TEXT_GADGET1_TEXT_ATTR        &topaz80_attr
  177. #define TEXT_GADGET1_INPUT_LEN        MAX_TEMPLATE_NAME_LEN
  178. #define TEXT_GADGET1_INPUT_ACTIVATE    ((ULONG)TEXT_GADGET_TEXT << 16 | TEXT_GADGET_FONT)
  179. #define TEXT_GADGET1_INPUT_DEFAULT    NULL
  180.  
  181. #define TEXT_GADGET2_TYPE        GADGET_DATA_TYPE_STRING
  182. #define TEXT_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  183. #define TEXT_GADGET2_LEFT_EDGE        TEXT_GADGET1_LEFT_EDGE
  184. #define TEXT_GADGET2_TOP_EDGE        (TEXT_GADGET1_TOP_EDGE + TEXT_GADGET1_HEIGHT + 4)
  185. #define TEXT_GADGET2_WIDTH        TEXT_GADGET1_WIDTH
  186. #define TEXT_GADGET2_HEIGHT        TEXT_GADGET1_HEIGHT
  187. #define TEXT_GADGET2_TEXT        "Te_xt"
  188. #define TEXT_GADGET2_TEXT_ATTR        &topaz80_attr
  189. #define TEXT_GADGET2_INPUT_LEN        MAX_TEXT_LEN
  190. #define TEXT_GADGET2_INPUT_ACTIVATE    ((ULONG)TEXT_GADGET_FONT << 16 | TEXT_GADGET_NAME)
  191. #define TEXT_GADGET2_INPUT_DEFAULT    NULL
  192.  
  193. #define TEXT_GADGET3_TYPE        GADGET_DATA_TYPE_STRING
  194. #define TEXT_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  195. #define TEXT_GADGET3_LEFT_EDGE        TEXT_GADGET1_LEFT_EDGE
  196. #define TEXT_GADGET3_TOP_EDGE        (TEXT_GADGET2_TOP_EDGE + TEXT_GADGET2_HEIGHT + 4)
  197. #define TEXT_GADGET3_WIDTH        TEXT_GADGET1_WIDTH
  198. #define TEXT_GADGET3_HEIGHT        TEXT_GADGET1_HEIGHT
  199. #define TEXT_GADGET3_TEXT        "_Font"
  200. #define TEXT_GADGET3_TEXT_ATTR        &topaz80_attr
  201. #define TEXT_GADGET3_INPUT_LEN        MAX_TEXT_LEN
  202. #define TEXT_GADGET3_INPUT_ACTIVATE    ((ULONG)TEXT_GADGET_NAME << 16 | TEXT_GADGET_TEXT)
  203. #define TEXT_GADGET3_INPUT_DEFAULT    NULL
  204.  
  205. #define TEXT_GADGET4_TYPE        GADGET_DATA_TYPE_COUNT
  206. #define TEXT_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT)
  207. #define TEXT_GADGET4_LEFT_EDGE        (TEXT_GADGET5_LEFT_EDGE + TEXT_GADGET5_WIDTH - TEXT_GADGET4_WIDTH)
  208. #define TEXT_GADGET4_TOP_EDGE        TEXT_GADGET3_TOP_EDGE
  209. #define TEXT_GADGET4_WIDTH        60
  210. #define TEXT_GADGET4_HEIGHT        12
  211. #define TEXT_GADGET4_TEXT        "_Size"
  212. #define TEXT_GADGET4_TEXT_ATTR        &topaz80_attr
  213. #define TEXT_GADGET4_COUNT_MIN        5
  214. #define TEXT_GADGET4_COUNT_MAX        200
  215. #define TEXT_GADGET4_COUNT_VALUE    NULL
  216.  
  217. #define TEXT_GADGET5_TYPE        GADGET_DATA_TYPE_CYCLE
  218. #define TEXT_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT)
  219. #define TEXT_GADGET5_TEXT        "_Type"
  220. #define TEXT_GADGET5_LEFT_EDGE        TEXT_GADGET1_LEFT_EDGE
  221. #define TEXT_GADGET5_TOP_EDGE        (TEXT_GADGET3_TOP_EDGE + TEXT_GADGET3_HEIGHT + 4)
  222. #define TEXT_GADGET5_WIDTH        (20 + (23 + 2) * 8)
  223. #define TEXT_GADGET5_HEIGHT        15
  224. #define TEXT_GADGET5_TEXT_ATTR        &topaz80_attr
  225. #define TEXT_GADGET5_ACTIVE        0
  226. #define TEXT_GADGET5_TEXT_ARRAY        &text_type_text_array[0]
  227.  
  228. #define TEXT_GADGET6_TYPE        GADGET_DATA_TYPE_CHECK
  229. #define TEXT_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  230. #define TEXT_GADGET6_TEXT        "_Bold"
  231. #define TEXT_GADGET6_LEFT_EDGE        (TEXT_GADGET5_LEFT_EDGE + TEXT_GADGET5_WIDTH + 40)
  232. #define TEXT_GADGET6_TOP_EDGE        TEXT_GADGET1_TOP_EDGE
  233. #define TEXT_GADGET6_WIDTH        0
  234. #define TEXT_GADGET6_HEIGHT        0
  235. #define TEXT_GADGET6_TEXT_ATTR        &topaz80_attr
  236.  
  237. #define TEXT_GADGET7_TYPE        GADGET_DATA_TYPE_CHECK
  238. #define TEXT_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  239. #define TEXT_GADGET7_TEXT        "_Italic"
  240. #define TEXT_GADGET7_LEFT_EDGE        TEXT_GADGET6_LEFT_EDGE
  241. #define TEXT_GADGET7_TOP_EDGE        (TEXT_GADGET6_TOP_EDGE + 13)
  242. #define TEXT_GADGET7_WIDTH        0
  243. #define TEXT_GADGET7_HEIGHT        0
  244. #define TEXT_GADGET7_TEXT_ATTR        &topaz80_attr
  245.  
  246. #define TEXT_GADGET8_TYPE        GADGET_DATA_TYPE_CHECK
  247. #define TEXT_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  248. #define TEXT_GADGET8_TEXT        "_Underline"
  249. #define TEXT_GADGET8_LEFT_EDGE        TEXT_GADGET6_LEFT_EDGE
  250. #define TEXT_GADGET8_TOP_EDGE        (TEXT_GADGET7_TOP_EDGE + 13)
  251. #define TEXT_GADGET8_WIDTH        0
  252. #define TEXT_GADGET8_HEIGHT        0
  253. #define TEXT_GADGET8_TEXT_ATTR        &topaz80_attr
  254.  
  255. #define TEXT_GADGET9_TYPE        GADGET_DATA_TYPE_CHECK
  256. #define TEXT_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  257. #define TEXT_GADGET9_TEXT        "Color_2"
  258. #define TEXT_GADGET9_LEFT_EDGE        TEXT_GADGET6_LEFT_EDGE
  259. #define TEXT_GADGET9_TOP_EDGE        (TEXT_GADGET8_TOP_EDGE + 13)
  260. #define TEXT_GADGET9_WIDTH        0
  261. #define TEXT_GADGET9_HEIGHT        0
  262. #define TEXT_GADGET9_TEXT_ATTR        &topaz80_attr
  263.  
  264. #define TEXT_GADGET10_TYPE        GADGET_DATA_TYPE_CHECK
  265. #define TEXT_GADGET10_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  266. #define TEXT_GADGET10_TEXT        "Co_mplement"
  267. #define TEXT_GADGET10_LEFT_EDGE        TEXT_GADGET6_LEFT_EDGE
  268. #define TEXT_GADGET10_TOP_EDGE        (TEXT_GADGET9_TOP_EDGE + 13)
  269. #define TEXT_GADGET10_WIDTH        0
  270. #define TEXT_GADGET10_HEIGHT        0
  271. #define TEXT_GADGET10_TEXT_ATTR        &topaz80_attr
  272.  
  273.     /* Statics for edit gadgets */
  274.  
  275. STATIC BYTE *text_type_text_array[] = {
  276.    "Text", "Unsigned decimal number", "Signed decimal number", "Hex number",
  277.    "Binary number", NULL
  278. };
  279. struct GadgetData  text_gadget_data[] = {
  280.    {
  281.     TEXT_GADGET1_TYPE,        /* gd_Type */
  282.     TEXT_GADGET1_FLAGS,        /* gd_Flags */
  283.     TEXT_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  284.     TEXT_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  285.     TEXT_GADGET1_WIDTH,        /* gd_Width */
  286.     TEXT_GADGET1_HEIGHT,        /* gd_Height */
  287.     TEXT_GADGET1_TEXT,        /* *gd_Text */
  288.     TEXT_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  289.     {
  290.     TEXT_GADGET1_INPUT_LEN,        /* gd_InputLen */
  291.     TEXT_GADGET1_INPUT_ACTIVATE,    /* gd_InputActivate */
  292.     TEXT_GADGET1_INPUT_DEFAULT    /* gd_InputDefault */
  293.     }
  294.    }, {
  295.     TEXT_GADGET2_TYPE,        /* gd_Type */
  296.     TEXT_GADGET2_FLAGS,        /* gd_Flags */
  297.     TEXT_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  298.     TEXT_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  299.     TEXT_GADGET2_WIDTH,        /* gd_Width */
  300.     TEXT_GADGET2_HEIGHT,        /* gd_Height */
  301.     TEXT_GADGET2_TEXT,        /* *gd_Text */
  302.     TEXT_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  303.     {
  304.     TEXT_GADGET2_INPUT_LEN,        /* gd_InputLen */
  305.     TEXT_GADGET2_INPUT_ACTIVATE,    /* gd_InputActivate */
  306.     TEXT_GADGET2_INPUT_DEFAULT    /* gd_InputDefault */
  307.     }
  308.    }, {
  309.     TEXT_GADGET3_TYPE,        /* gd_Type */
  310.     TEXT_GADGET3_FLAGS,        /* gd_Flags */
  311.     TEXT_GADGET3_LEFT_EDGE,        /* gd_LeftEdge */
  312.     TEXT_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  313.     TEXT_GADGET3_WIDTH,        /* gd_Width */
  314.     TEXT_GADGET3_HEIGHT,        /* gd_Height */
  315.     TEXT_GADGET3_TEXT,        /* *gd_Text */
  316.     TEXT_GADGET3_TEXT_ATTR,        /* *gd_TextAttr */
  317.     {
  318.     TEXT_GADGET3_INPUT_LEN,        /* gd_InputLen */
  319.     TEXT_GADGET3_INPUT_ACTIVATE,    /* gd_InputActivate */
  320.     TEXT_GADGET3_INPUT_DEFAULT    /* gd_InputDefault */
  321.     }
  322.    }, {
  323.     TEXT_GADGET4_TYPE,        /* gd_Type */
  324.     TEXT_GADGET4_FLAGS,        /* gd_Flags */
  325.     TEXT_GADGET4_LEFT_EDGE,        /* gd_LeftEdge */
  326.     TEXT_GADGET4_TOP_EDGE,        /* gd_TopEdge */
  327.     TEXT_GADGET4_WIDTH,        /* gd_Width */
  328.     TEXT_GADGET4_HEIGHT,        /* gd_Height */
  329.     TEXT_GADGET4_TEXT,        /* *gd_Text */
  330.     TEXT_GADGET4_TEXT_ATTR,        /* *gd_TextAttr */
  331.     {
  332.     TEXT_GADGET4_COUNT_MIN,        /* gd_CountMin */
  333.     TEXT_GADGET4_COUNT_MAX,        /* gd_CountMax */
  334.     TEXT_GADGET4_COUNT_VALUE    /* gd_CountValue */
  335.     }
  336.    }, {
  337.     TEXT_GADGET5_TYPE,        /* gd_Type */
  338.     TEXT_GADGET5_FLAGS,        /* gd_Flags */
  339.     TEXT_GADGET5_LEFT_EDGE,        /* gd_LeftEdge */
  340.     TEXT_GADGET5_TOP_EDGE,        /* gd_TopEdge */
  341.     TEXT_GADGET5_WIDTH,        /* gd_Width */
  342.     TEXT_GADGET5_HEIGHT,        /* gd_Height */
  343.     TEXT_GADGET5_TEXT,        /* *gd_Text */
  344.     TEXT_GADGET5_TEXT_ATTR,        /* *gd_TextAttr */
  345.     {
  346.     0,                /* gd_CyclePad */
  347.     TEXT_GADGET5_ACTIVE,        /* gd_CycleActive */
  348.     TEXT_GADGET5_TEXT_ARRAY        /* *gd_CycleTextArray */
  349.     }
  350.    }, {
  351.     TEXT_GADGET6_TYPE,        /* gd_Type */
  352.     TEXT_GADGET6_FLAGS,        /* gd_Flags */
  353.     TEXT_GADGET6_LEFT_EDGE,        /* gd_LeftEdge */
  354.     TEXT_GADGET6_TOP_EDGE,        /* gd_TopEdge */
  355.     TEXT_GADGET6_WIDTH,        /* gd_Width */
  356.     TEXT_GADGET6_HEIGHT,        /* gd_Height */
  357.     TEXT_GADGET6_TEXT,        /* *gd_Text */
  358.     TEXT_GADGET6_TEXT_ATTR,        /* *gd_TextAttr */
  359.     { 0, 0, 0 }
  360.    }, {
  361.     TEXT_GADGET7_TYPE,        /* gd_Type */
  362.     TEXT_GADGET7_FLAGS,        /* gd_Flags */
  363.     TEXT_GADGET7_LEFT_EDGE,        /* gd_LeftEdge */
  364.     TEXT_GADGET7_TOP_EDGE,        /* gd_TopEdge */
  365.     TEXT_GADGET7_WIDTH,        /* gd_Width */
  366.     TEXT_GADGET7_HEIGHT,        /* gd_Height */
  367.     TEXT_GADGET7_TEXT,        /* *gd_Text */
  368.     TEXT_GADGET7_TEXT_ATTR,        /* *gd_TextAttr */
  369.     { 0, 0, 0 }
  370.    }, {
  371.     TEXT_GADGET8_TYPE,        /* gd_Type */
  372.     TEXT_GADGET8_FLAGS,        /* gd_Flags */
  373.     TEXT_GADGET8_LEFT_EDGE,        /* gd_LeftEdge */
  374.     TEXT_GADGET8_TOP_EDGE,        /* gd_TopEdge */
  375.     TEXT_GADGET8_WIDTH,        /* gd_Width */
  376.     TEXT_GADGET8_HEIGHT,        /* gd_Height */
  377.     TEXT_GADGET8_TEXT,        /* *gd_Text */
  378.     TEXT_GADGET8_TEXT_ATTR,        /* *gd_TextAttr */
  379.     { 0, 0, 0 }
  380.    }, {
  381.     TEXT_GADGET9_TYPE,        /* gd_Type */
  382.     TEXT_GADGET9_FLAGS,        /* gd_Flags */
  383.     TEXT_GADGET9_LEFT_EDGE,        /* gd_LeftEdge */
  384.     TEXT_GADGET9_TOP_EDGE,        /* gd_TopEdge */
  385.     TEXT_GADGET9_WIDTH,        /* gd_Width */
  386.     TEXT_GADGET9_HEIGHT,        /* gd_Height */
  387.     TEXT_GADGET9_TEXT,        /* *gd_Text */
  388.     TEXT_GADGET9_TEXT_ATTR,        /* *gd_TextAttr */
  389.     { 0, 0, 0 }
  390.    }, {
  391.     TEXT_GADGET10_TYPE,        /* gd_Type */
  392.     TEXT_GADGET10_FLAGS,        /* gd_Flags */
  393.     TEXT_GADGET10_LEFT_EDGE,    /* gd_LeftEdge */
  394.     TEXT_GADGET10_TOP_EDGE,        /* gd_TopEdge */
  395.     TEXT_GADGET10_WIDTH,        /* gd_Width */
  396.     TEXT_GADGET10_HEIGHT,        /* gd_Height */
  397.     TEXT_GADGET10_TEXT,        /* *gd_Text */
  398.     TEXT_GADGET10_TEXT_ATTR,    /* *gd_TextAttr */
  399.     { 0, 0, 0 }
  400.    }, {
  401.     INTUISUP_DATA_END        /* mark end of gadget data array */
  402.    }
  403. };
  404.     /* Defines for normal gadget data */
  405.  
  406. #define NORMAL_GADGET1_TYPE        GADGET_DATA_TYPE_STRING
  407. #define NORMAL_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  408. #define NORMAL_GADGET1_LEFT_EDGE    (10 + (4 + 1) * 8)
  409. #define NORMAL_GADGET1_TOP_EDGE        20
  410. #define NORMAL_GADGET1_WIDTH        100
  411. #define NORMAL_GADGET1_HEIGHT        12
  412. #define NORMAL_GADGET1_TEXT        "_Name"
  413. #define NORMAL_GADGET1_TEXT_ATTR    &topaz80_attr
  414. #define NORMAL_GADGET1_INPUT_LEN    MAX_TEMPLATE_NAME_LEN
  415. #define NORMAL_GADGET1_INPUT_ACTIVATE    ((ULONG)NORMAL_GADGET_TEXT << 16 | NORMAL_GADGET_FONT)
  416. #define NORMAL_GADGET1_INPUT_DEFAULT    NULL
  417.  
  418. #define NORMAL_GADGET2_TYPE        GADGET_DATA_TYPE_STRING
  419. #define NORMAL_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  420. #define NORMAL_GADGET2_LEFT_EDGE    NORMAL_GADGET1_LEFT_EDGE
  421. #define NORMAL_GADGET2_TOP_EDGE        (NORMAL_GADGET1_TOP_EDGE + NORMAL_GADGET1_HEIGHT + 4)
  422. #define NORMAL_GADGET2_WIDTH        NORMAL_GADGET1_WIDTH
  423. #define NORMAL_GADGET2_HEIGHT        NORMAL_GADGET1_HEIGHT
  424. #define NORMAL_GADGET2_TEXT        "Te_xt"
  425. #define NORMAL_GADGET2_TEXT_ATTR    &topaz80_attr
  426. #define NORMAL_GADGET2_INPUT_LEN    MAX_TEXT_LEN
  427. #define NORMAL_GADGET2_INPUT_ACTIVATE    ((ULONG)NORMAL_GADGET_FONT << 16 | NORMAL_GADGET_NAME)
  428. #define NORMAL_GADGET2_INPUT_DEFAULT    NULL
  429.  
  430. #define NORMAL_GADGET3_TYPE        GADGET_DATA_TYPE_STRING
  431. #define NORMAL_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  432. #define NORMAL_GADGET3_LEFT_EDGE    NORMAL_GADGET1_LEFT_EDGE
  433. #define NORMAL_GADGET3_TOP_EDGE        (NORMAL_GADGET2_TOP_EDGE + NORMAL_GADGET2_HEIGHT + 4)
  434. #define NORMAL_GADGET3_WIDTH        NORMAL_GADGET1_WIDTH
  435. #define NORMAL_GADGET3_HEIGHT        NORMAL_GADGET1_HEIGHT
  436. #define NORMAL_GADGET3_TEXT        "_Font"
  437. #define NORMAL_GADGET3_TEXT_ATTR    &topaz80_attr
  438. #define NORMAL_GADGET3_INPUT_LEN    MAX_TEXT_LEN
  439. #define NORMAL_GADGET3_INPUT_ACTIVATE    ((ULONG)NORMAL_GADGET_NAME << 16 | NORMAL_GADGET_TEXT)
  440. #define NORMAL_GADGET3_INPUT_DEFAULT    NULL
  441.  
  442. #define NORMAL_GADGET4_TYPE        GADGET_DATA_TYPE_COUNT
  443. #define NORMAL_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT)
  444. #define NORMAL_GADGET4_LEFT_EDGE    (NORMAL_GADGET5_LEFT_EDGE + NORMAL_GADGET5_WIDTH - NORMAL_GADGET4_WIDTH)
  445. #define NORMAL_GADGET4_TOP_EDGE        NORMAL_GADGET3_TOP_EDGE
  446. #define NORMAL_GADGET4_WIDTH        60
  447. #define NORMAL_GADGET4_HEIGHT        12
  448. #define NORMAL_GADGET4_TEXT        "_Size"
  449. #define NORMAL_GADGET4_TEXT_ATTR    &topaz80_attr
  450. #define NORMAL_GADGET4_COUNT_MIN    5
  451. #define NORMAL_GADGET4_COUNT_MAX    200
  452. #define NORMAL_GADGET4_COUNT_VALUE    NULL
  453.  
  454. #define NORMAL_GADGET5_TYPE        GADGET_DATA_TYPE_CYCLE
  455. #define NORMAL_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT)
  456. #define NORMAL_GADGET5_TEXT        "_Pos"
  457. #define NORMAL_GADGET5_LEFT_EDGE    NORMAL_GADGET1_LEFT_EDGE
  458. #define NORMAL_GADGET5_TOP_EDGE        (NORMAL_GADGET3_TOP_EDGE + NORMAL_GADGET3_HEIGHT + 4)
  459. #define NORMAL_GADGET5_WIDTH        (20 + (23 + 2) * 8)
  460. #define NORMAL_GADGET5_HEIGHT        15
  461. #define NORMAL_GADGET5_TEXT_ATTR    &topaz80_attr
  462. #define NORMAL_GADGET5_ACTIVE        0
  463. #define NORMAL_GADGET5_TEXT_ARRAY    &normal_text_pos_text_array[0]
  464.  
  465. #define NORMAL_GADGET6_TYPE        GADGET_DATA_TYPE_CHECK
  466. #define NORMAL_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  467. #define NORMAL_GADGET6_TEXT        "Dis_abled"
  468. #define NORMAL_GADGET6_LEFT_EDGE    (NORMAL_GADGET5_LEFT_EDGE + NORMAL_GADGET5_WIDTH + 40)
  469. #define NORMAL_GADGET6_TOP_EDGE        NORMAL_GADGET1_TOP_EDGE
  470. #define NORMAL_GADGET6_WIDTH        0
  471. #define NORMAL_GADGET6_HEIGHT        0
  472. #define NORMAL_GADGET6_TEXT_ATTR    &topaz80_attr
  473.  
  474. #define NORMAL_GADGET7_TYPE        GADGET_DATA_TYPE_CHECK
  475. #define NORMAL_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  476. #define NORMAL_GADGET7_TEXT        "No _Border"
  477. #define NORMAL_GADGET7_LEFT_EDGE    NORMAL_GADGET6_LEFT_EDGE
  478. #define NORMAL_GADGET7_TOP_EDGE        (NORMAL_GADGET6_TOP_EDGE + 13)
  479. #define NORMAL_GADGET7_WIDTH        0
  480. #define NORMAL_GADGET7_HEIGHT        0
  481. #define NORMAL_GADGET7_TEXT_ATTR    &topaz80_attr
  482.  
  483. #define NORMAL_GADGET8_TYPE        GADGET_DATA_TYPE_CHECK
  484. #define NORMAL_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  485. #define NORMAL_GADGET8_TEXT        "_High Comp"
  486. #define NORMAL_GADGET8_LEFT_EDGE    NORMAL_GADGET6_LEFT_EDGE
  487. #define NORMAL_GADGET8_TOP_EDGE        (NORMAL_GADGET7_TOP_EDGE + 13)
  488. #define NORMAL_GADGET8_WIDTH        0
  489. #define NORMAL_GADGET8_HEIGHT        0
  490. #define NORMAL_GADGET8_TEXT_ATTR    &topaz80_attr
  491.  
  492. #define NORMAL_GADGET9_TYPE        GADGET_DATA_TYPE_CHECK
  493. #define NORMAL_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  494. #define NORMAL_GADGET9_TEXT        "Hot _Key"
  495. #define NORMAL_GADGET9_LEFT_EDGE    NORMAL_GADGET6_LEFT_EDGE
  496. #define NORMAL_GADGET9_TOP_EDGE        (NORMAL_GADGET8_TOP_EDGE + 13)
  497. #define NORMAL_GADGET9_WIDTH        0
  498. #define NORMAL_GADGET9_HEIGHT        0
  499. #define NORMAL_GADGET9_TEXT_ATTR    &topaz80_attr
  500.  
  501. #define NORMAL_GADGET10_TYPE        GADGET_DATA_TYPE_CHECK
  502. #define NORMAL_GADGET10_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  503. #define NORMAL_GADGET10_TEXT        "Color _2"
  504. #define NORMAL_GADGET10_LEFT_EDGE    NORMAL_GADGET6_LEFT_EDGE
  505. #define NORMAL_GADGET10_TOP_EDGE    (NORMAL_GADGET9_TOP_EDGE + 13)
  506. #define NORMAL_GADGET10_WIDTH        0
  507. #define NORMAL_GADGET10_HEIGHT        0
  508. #define NORMAL_GADGET10_TEXT_ATTR    &topaz80_attr
  509.  
  510.     /* Statics for normal gadgets */
  511.  
  512. STATIC BYTE *normal_text_pos_text_array[] = {
  513.    "Left of Select Box", "Right of Select Box", "Above the Select Box",
  514.    "Below the Select Box", "Inside of Select Box", NULL
  515. };
  516. struct GadgetData  normal_gadget_data[] = {
  517.    {
  518.     NORMAL_GADGET1_TYPE,        /* gd_Type */
  519.     NORMAL_GADGET1_FLAGS,        /* gd_Flags */
  520.     NORMAL_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  521.     NORMAL_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  522.     NORMAL_GADGET1_WIDTH,        /* gd_Width */
  523.     NORMAL_GADGET1_HEIGHT,        /* gd_Height */
  524.     NORMAL_GADGET1_TEXT,        /* *gd_Text */
  525.     NORMAL_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  526.     {
  527.     NORMAL_GADGET1_INPUT_LEN,    /* gd_InputLen */
  528.     NORMAL_GADGET1_INPUT_ACTIVATE,    /* gd_InputActivate */
  529.     NORMAL_GADGET1_INPUT_DEFAULT    /* gd_InputDefault */
  530.     }
  531.    }, {
  532.     NORMAL_GADGET2_TYPE,        /* gd_Type */
  533.     NORMAL_GADGET2_FLAGS,        /* gd_Flags */
  534.     NORMAL_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  535.     NORMAL_GADGET2_TOP_EDGE,    /* gd_TopEdge */
  536.     NORMAL_GADGET2_WIDTH,        /* gd_Width */
  537.     NORMAL_GADGET2_HEIGHT,        /* gd_Height */
  538.     NORMAL_GADGET2_TEXT,        /* *gd_Text */
  539.     NORMAL_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  540.     {
  541.     NORMAL_GADGET2_INPUT_LEN,    /* gd_InputLen */
  542.     NORMAL_GADGET2_INPUT_ACTIVATE,    /* gd_InputActivate */
  543.     NORMAL_GADGET2_INPUT_DEFAULT    /* gd_InputDefault */
  544.     }
  545.    }, {
  546.     NORMAL_GADGET3_TYPE,        /* gd_Type */
  547.     NORMAL_GADGET3_FLAGS,        /* gd_Flags */
  548.     NORMAL_GADGET3_LEFT_EDGE,    /* gd_LeftEdge */
  549.     NORMAL_GADGET3_TOP_EDGE,    /* gd_TopEdge */
  550.     NORMAL_GADGET3_WIDTH,        /* gd_Width */
  551.     NORMAL_GADGET3_HEIGHT,        /* gd_Height */
  552.     NORMAL_GADGET3_TEXT,        /* *gd_Text */
  553.     NORMAL_GADGET3_TEXT_ATTR,    /* *gd_TextAttr */
  554.     {
  555.     NORMAL_GADGET3_INPUT_LEN,    /* gd_InputLen */
  556.     NORMAL_GADGET3_INPUT_ACTIVATE,    /* gd_InputActivate */
  557.     NORMAL_GADGET3_INPUT_DEFAULT    /* gd_InputDefault */
  558.     }
  559.    }, {
  560.     NORMAL_GADGET4_TYPE,        /* gd_Type */
  561.     NORMAL_GADGET4_FLAGS,        /* gd_Flags */
  562.     NORMAL_GADGET4_LEFT_EDGE,    /* gd_LeftEdge */
  563.     NORMAL_GADGET4_TOP_EDGE,    /* gd_TopEdge */
  564.     NORMAL_GADGET4_WIDTH,        /* gd_Width */
  565.     NORMAL_GADGET4_HEIGHT,        /* gd_Height */
  566.     NORMAL_GADGET4_TEXT,        /* *gd_Text */
  567.     NORMAL_GADGET4_TEXT_ATTR,    /* *gd_TextAttr */
  568.     {
  569.     NORMAL_GADGET4_COUNT_MIN,    /* gd_CountMin */
  570.     NORMAL_GADGET4_COUNT_MAX,    /* gd_CountMax */
  571.     NORMAL_GADGET4_COUNT_VALUE    /* gd_CountValue */
  572.     }
  573.    }, {
  574.     NORMAL_GADGET5_TYPE,        /* gd_Type */
  575.     NORMAL_GADGET5_FLAGS,        /* gd_Flags */
  576.     NORMAL_GADGET5_LEFT_EDGE,    /* gd_LeftEdge */
  577.     NORMAL_GADGET5_TOP_EDGE,    /* gd_TopEdge */
  578.     NORMAL_GADGET5_WIDTH,        /* gd_Width */
  579.     NORMAL_GADGET5_HEIGHT,        /* gd_Height */
  580.     NORMAL_GADGET5_TEXT,        /* *gd_Text */
  581.     NORMAL_GADGET5_TEXT_ATTR,    /* *gd_TextAttr */
  582.     {
  583.     0,                /* gd_CyclePad */
  584.     NORMAL_GADGET5_ACTIVE,        /* gd_CycleActive */
  585.     NORMAL_GADGET5_TEXT_ARRAY    /* *gd_CycleTextArray */
  586.     }
  587.    }, {
  588.     NORMAL_GADGET6_TYPE,        /* gd_Type */
  589.     NORMAL_GADGET6_FLAGS,        /* gd_Flags */
  590.     NORMAL_GADGET6_LEFT_EDGE,    /* gd_LeftEdge */
  591.     NORMAL_GADGET6_TOP_EDGE,    /* gd_TopEdge */
  592.     NORMAL_GADGET6_WIDTH,        /* gd_Width */
  593.     NORMAL_GADGET6_HEIGHT,        /* gd_Height */
  594.     NORMAL_GADGET6_TEXT,        /* *gd_Text */
  595.     NORMAL_GADGET6_TEXT_ATTR,    /* *gd_TextAttr */
  596.     { 0, 0, 0 }
  597.    }, {
  598.     NORMAL_GADGET7_TYPE,        /* gd_Type */
  599.     NORMAL_GADGET7_FLAGS,        /* gd_Flags */
  600.     NORMAL_GADGET7_LEFT_EDGE,    /* gd_LeftEdge */
  601.     NORMAL_GADGET7_TOP_EDGE,    /* gd_TopEdge */
  602.     NORMAL_GADGET7_WIDTH,        /* gd_Width */
  603.     NORMAL_GADGET7_HEIGHT,        /* gd_Height */
  604.     NORMAL_GADGET7_TEXT,        /* *gd_Text */
  605.     NORMAL_GADGET7_TEXT_ATTR,    /* *gd_TextAttr */
  606.     { 0, 0, 0 }
  607.    }, {
  608.     NORMAL_GADGET8_TYPE,        /* gd_Type */
  609.     NORMAL_GADGET8_FLAGS,        /* gd_Flags */
  610.     NORMAL_GADGET8_LEFT_EDGE,    /* gd_LeftEdge */
  611.     NORMAL_GADGET8_TOP_EDGE,    /* gd_TopEdge */
  612.     NORMAL_GADGET8_WIDTH,        /* gd_Width */
  613.     NORMAL_GADGET8_HEIGHT,        /* gd_Height */
  614.     NORMAL_GADGET8_TEXT,        /* *gd_Text */
  615.     NORMAL_GADGET8_TEXT_ATTR,    /* *gd_TextAttr */
  616.     { 0, 0, 0 }
  617.    }, {
  618.     NORMAL_GADGET9_TYPE,        /* gd_Type */
  619.     NORMAL_GADGET9_FLAGS,        /* gd_Flags */
  620.     NORMAL_GADGET9_LEFT_EDGE,    /* gd_LeftEdge */
  621.     NORMAL_GADGET9_TOP_EDGE,    /* gd_TopEdge */
  622.     NORMAL_GADGET9_WIDTH,        /* gd_Width */
  623.     NORMAL_GADGET9_HEIGHT,        /* gd_Height */
  624.     NORMAL_GADGET9_TEXT,        /* *gd_Text */
  625.     NORMAL_GADGET9_TEXT_ATTR,    /* *gd_TextAttr */
  626.     { 0, 0, 0 }
  627.    }, {
  628.     NORMAL_GADGET10_TYPE,        /* gd_Type */
  629.     NORMAL_GADGET10_FLAGS,        /* gd_Flags */
  630.     NORMAL_GADGET10_LEFT_EDGE,    /* gd_LeftEdge */
  631.     NORMAL_GADGET10_TOP_EDGE,    /* gd_TopEdge */
  632.     NORMAL_GADGET10_WIDTH,        /* gd_Width */
  633.     NORMAL_GADGET10_HEIGHT,        /* gd_Height */
  634.     NORMAL_GADGET10_TEXT,        /* *gd_Text */
  635.     NORMAL_GADGET10_TEXT_ATTR,    /* *gd_TextAttr */
  636.     { 0, 0, 0 }
  637.    }, {
  638.     INTUISUP_DATA_END        /* mark end of gadget data array */
  639.    }
  640. };
  641.     /* Edit template data */
  642.  
  643.    SHORT
  644. edit_template_data(VOID)
  645. {
  646.    struct Template    *tp = selected_template;
  647.    struct BorderData  *bd;
  648.    struct TextData    *td;
  649.    struct GadgetData  *gd, *gd1, *gd2, *gd3;
  650.    APTR  gl1, gl2, gl3, gl4;
  651.    ULONG flags;
  652.    SHORT status;
  653.  
  654.    /* Init normal and special gadget data */
  655.    switch (TEMPLATE_GROUP(tp)) {
  656.       case TEMPLATE_GROUP_BORDER :
  657.      bd  = &tp->tp_Data.tp_BorderData;
  658.      gd1 = &border_gadget_data[0];
  659.      gd2 = NULL;
  660.      gd3 = NULL;
  661.  
  662.      /* Init normal gadget data */
  663.      (gd1 + BORDER_GADGET_NAME)->gd_SpecialData.gd_InputData.gd_InputDefault = &tp->tp_TemplateName[0];
  664.      (gd1 + BORDER_GADGET_TYPE)->gd_SpecialData.gd_CycleData.gd_CycleActive  = bd->bd_Type - 1;
  665.      break;
  666.       case TEMPLATE_GROUP_TEXT :
  667.      td    = &tp->tp_Data.tp_TextData;
  668.      gd1   = &text_gadget_data[0];
  669.      gd2   = NULL;
  670.      gd3   = NULL;
  671.      flags = td->td_Flags;
  672.  
  673.      /* Init normal gadget data */
  674.      (gd1 + TEXT_GADGET_NAME)->gd_SpecialData.gd_InputData.gd_InputDefault = &tp->tp_TemplateName[0];
  675.      (gd1 + TEXT_GADGET_TEXT)->gd_SpecialData.gd_InputData.gd_InputDefault = td->td_Text;
  676.      (gd1 + TEXT_GADGET_TEXT)->gd_Flags &= ~(GADGET_DATA_FLAG_STRING_UNSIGNED_DEC | GADGET_DATA_FLAG_STRING_SIGNED_DEC | GADGET_DATA_FLAG_STRING_HEX | GADGET_DATA_FLAG_STRING_BIN);
  677.      switch (td->td_Type) {
  678.         case TEXT_DATA_TYPE_NUM_UNSIGNED_DEC :
  679.            (gd1 + TEXT_GADGET_TEXT)->gd_Flags |= GADGET_DATA_FLAG_STRING_UNSIGNED_DEC;
  680.            break;
  681.         case TEXT_DATA_TYPE_NUM_SIGNED_DEC :
  682.            (gd1 + TEXT_GADGET_TEXT)->gd_Flags |= GADGET_DATA_FLAG_STRING_SIGNED_DEC;
  683.            break;
  684.         case TEXT_DATA_TYPE_NUM_HEX :
  685.            (gd1 + TEXT_GADGET_TEXT)->gd_Flags |= GADGET_DATA_FLAG_STRING_HEX;
  686.            break;
  687.         case TEXT_DATA_TYPE_NUM_BIN :
  688.            (gd1 + TEXT_GADGET_TEXT)->gd_Flags |= GADGET_DATA_FLAG_STRING_BIN;
  689.            break;
  690.      }
  691.      (gd1 + TEXT_GADGET_FONT)->gd_SpecialData.gd_InputData.gd_InputDefault        = (BYTE *)tp->tp_TextAttr.ta_Name;
  692.      (gd1 + TEXT_GADGET_SIZE)->gd_SpecialData.gd_CountData.gd_CountValue          = tp->tp_TextAttr.ta_YSize;
  693.      (gd1 + TEXT_GADGET_TYPE)->gd_SpecialData.gd_CycleData.gd_CycleActive         = td->td_Type - 1;
  694.      (gd1 + TEXT_GADGET_BOLD)->gd_SpecialData.gd_CheckData.gd_CheckSelected       = (flags & TEXT_DATA_FLAG_BOLD ? 1 : 0);
  695.      (gd1 + TEXT_GADGET_ITALIC)->gd_SpecialData.gd_CheckData.gd_CheckSelected     = (flags & TEXT_DATA_FLAG_ITALIC ? 1 : 0);
  696.      (gd1 + TEXT_GADGET_UNDERLINED)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEXT_DATA_FLAG_UNDERLINED ? 1 : 0);
  697.      (gd1 + TEXT_GADGET_COLOR2)->gd_SpecialData.gd_CheckData.gd_CheckSelected     = (flags & TEXT_DATA_FLAG_COLOR2 ? 1 : 0);
  698.      (gd1 + TEXT_GADGET_COMPLEMENT)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEXT_DATA_FLAG_COMPLEMENT ? 1 : 0);
  699.      break;
  700.       case TEMPLATE_GROUP_GADGET :
  701.      gd    = &tp->tp_Data.tp_GadgetData;
  702.      gd1   = &normal_gadget_data[0];
  703.      flags = gd->gd_Flags;
  704.  
  705.      /* Init normal gadget data */
  706.      (gd1 + NORMAL_GADGET_NAME)->gd_SpecialData.gd_InputData.gd_InputDefault = &tp->tp_TemplateName[0];
  707.      (gd1 + NORMAL_GADGET_TEXT)->gd_SpecialData.gd_InputData.gd_InputDefault = gd->gd_Text;
  708.      (gd1 + NORMAL_GADGET_FONT)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *)tp->tp_TextAttr.ta_Name;
  709.      (gd1 + NORMAL_GADGET_SIZE)->gd_SpecialData.gd_CountData.gd_CountValue   = tp->tp_TextAttr.ta_YSize;
  710.      switch (GADGET_TEXT_POS_MASK(gd->gd_Flags)) {
  711.         case GADGET_DATA_FLAG_TEXT_LEFT :
  712.            (gd1 + NORMAL_GADGET_POS)->gd_SpecialData.gd_CycleData.gd_CycleActive = TEXT_POS_LEFT;
  713.            break;
  714.         case GADGET_DATA_FLAG_TEXT_RIGHT :
  715.            (gd1 + NORMAL_GADGET_POS)->gd_SpecialData.gd_CycleData.gd_CycleActive = TEXT_POS_RIGHT;
  716.            break;
  717.         case GADGET_DATA_FLAG_TEXT_ABOVE :
  718.            (gd1 + NORMAL_GADGET_POS)->gd_SpecialData.gd_CycleData.gd_CycleActive = TEXT_POS_ABOVE;
  719.            break;
  720.         case GADGET_DATA_FLAG_TEXT_BELOW :
  721.            (gd1 + NORMAL_GADGET_POS)->gd_SpecialData.gd_CycleData.gd_CycleActive = TEXT_POS_BELOW;
  722.            break;
  723.         default :
  724.            (gd1 + NORMAL_GADGET_POS)->gd_SpecialData.gd_CycleData.gd_CycleActive = TEXT_POS_INSIDE;
  725.            break;
  726.      }
  727.      (gd1 + NORMAL_GADGET_DISABLED)->gd_SpecialData.gd_CheckData.gd_CheckSelected  = (flags & GADGET_DATA_FLAG_DISABLED ? 1 : 0);
  728.      (gd1 + NORMAL_GADGET_NO_BORDER)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & GADGET_DATA_FLAG_NO_BORDER ? 1 : 0);
  729.      (gd1 + NORMAL_GADGET_HIGHCOMP)->gd_SpecialData.gd_CheckData.gd_CheckSelected  = (flags & GADGET_DATA_FLAG_HIGH_COMP ? 1 : 0);
  730.      (gd1 + NORMAL_GADGET_HOTKEY)->gd_SpecialData.gd_CheckData.gd_CheckSelected    = (flags & GADGET_DATA_FLAG_HOT_KEY ? 1 : 0);
  731.      (gd1 + NORMAL_GADGET_COLOR2)->gd_SpecialData.gd_CheckData.gd_CheckSelected    = (flags & GADGET_DATA_FLAG_TEXT_COLOR2 ? 1 : 0);
  732.      
  733.      /* Init special gadget data */
  734.      switch (gd->gd_Type) {
  735.         case GADGET_DATA_TYPE_BUTTON :
  736.         case GADGET_DATA_TYPE_CHECK :
  737.            gd2 = NULL;
  738.            gd3 = NULL;
  739.            break;
  740.         case GADGET_DATA_TYPE_MX :
  741.            gd2 = &list_gadget_data[0];
  742.            gd3 = NULL;
  743.            break;
  744.         case GADGET_DATA_TYPE_STRING :
  745.            gd2 = NULL;
  746.            gd3 = NULL;
  747.            break;
  748.         case GADGET_DATA_TYPE_INTEGER :
  749.            gd2 = NULL;
  750.            gd3 = NULL;
  751.            break;
  752.         case GADGET_DATA_TYPE_SLIDER :
  753.            gd2 = NULL;
  754.            gd3 = NULL;
  755.            break;
  756.         case GADGET_DATA_TYPE_SCROLLER :
  757.            gd2 = NULL;
  758.            gd3 = NULL;
  759.            break;
  760.         case GADGET_DATA_TYPE_CYCLE :
  761.            gd2 = &list_gadget_data[0];
  762.            gd3 = NULL;
  763.            break;
  764.         case GADGET_DATA_TYPE_COUNT :
  765.            gd2 = NULL;
  766.            gd3 = NULL;
  767.            break;
  768.         case GADGET_DATA_TYPE_LISTVIEW :
  769.            gd2 = &list_gadget_data[0];
  770.            gd3 = NULL;
  771.            break;
  772.         case GADGET_DATA_TYPE_PALETTE :
  773.            gd2 = NULL;
  774.            gd3 = NULL;
  775.            break;
  776.      }
  777.      break;
  778.    }
  779.  
  780.    /* If special gadget data needed then enable 'SWITCH' gadget */
  781.    if (gd2 || gd3) {
  782.       edit_gadget_data[EDIT_GADGET_SWITCH].gd_Flags &= ~GADGET_DATA_FLAG_DISABLED;
  783.       gl2 = NULL;
  784.       gl3 = NULL;
  785.    } else {
  786.       edit_gadget_data[EDIT_GADGET_SWITCH].gd_Flags |= GADGET_DATA_FLAG_DISABLED;
  787.    }
  788.  
  789.    /* Create gadget lists */
  790.    if (!(gl1 = ICreateGadgets(eri, gd1, 0, 0))) {
  791.       status = EDITOR_ERROR_OUT_OF_MEM;
  792.    } else {
  793.       if (gd2 && !(gl2 = ICreateGadgets(eri, gd2, 0, 0))) {
  794.      status = EDITOR_ERROR_OUT_OF_MEM;
  795.       } else {
  796.      if (gd3 && !(gl3 = ICreateGadgets(eri, gd3, 0, 0))) {
  797.         status = EDITOR_ERROR_OUT_OF_MEM;
  798.      } else {
  799.         if (!(gl4 = ICreateGadgets(eri, &edit_gadget_data[0], 0, 0))) {
  800.            status = EDITOR_ERROR_OUT_OF_MEM;
  801.         } else {
  802.            status = edit_template_data_action(tp, gl1, gl2, gl3, gl4);
  803.            IFreeGadgets(gl4);
  804.         }
  805.         if (gd3) {
  806.            IFreeGadgets(gl3);
  807.         }
  808.      }
  809.      if (gd2) {
  810.         IFreeGadgets(gl2);
  811.      }
  812.       }
  813.       IFreeGadgets(gl1);
  814.    }
  815.    show_error(status);
  816.    MWCheck();
  817.    return(status);
  818. }
  819.